﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceOTO;
using ServiceOTOForm;
using System.Web;
using Telerik.WinControls.UI;
using System.Collections;
namespace ServiceOTOForm
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int ID;
        private int TT = 0;
        private OTOSW.DataIn dti = new OTOSW.DataIn();
        private OTOSW.OTO_ENTITY otoEn = new OTOSW.OTO_ENTITY();
        private OTOSW.NHACUNGCAP_ENTITY nccEn = new OTOSW.NHACUNGCAP_ENTITY();
        private OTOSW.PHIEUNHAP_ENTITY pnEn = new OTOSW.PHIEUNHAP_ENTITY();
        private OTOSW.CHITIETPHIEUNHAP_ENTITY ctpnEn = new OTOSW.CHITIETPHIEUNHAP_ENTITY();
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                LoadComboNCC();
                LoadComboNCCXeGridView();
                LoadLVDSPhieuNhap();
                radListView1_ItemMouseClick(null, null);
            }
            catch { }

        }
        
        private void LoadComboNCC()
        {
            try
            {
             
                DataSet ds = new DataSet();
                ds = dti.DanhSachNhaCC(nccEn);
                cbNCC.DataSource = ds.Tables[0];
                cbNCC.DisplayMember = "TENNCC";
                cbNCC.ValueMember = "MANCC";

            }
            catch
            {

            }
        }

        private void LoadComboNCCXeGridView()
        {
            try
            {
                DataSet ds = new DataSet();
                ds = dti.DanhSachXe(otoEn);
                GridViewComboBoxColumn comboCol = (GridViewComboBoxColumn)radGridView2.Columns[0];
                comboCol.DataSource = ds.Tables[0];
                comboCol.DisplayMember = "TENXE";
                comboCol.ValueMember = "MAXE";

            }
            catch
            {

            }
        }
        public Hashtable HashListPHIEUNHAP()
        {
            
            Hashtable ht = new Hashtable();
            pnEn.NGAYPN = dtpNgayNhap.Value;
            DataSet ds =dti.DANHSACHPHIEUNHAP(pnEn);
            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    ht.Add(dr["SOPN"], dr["ID"]);
                }
            }
            return ht;
        }

        private void radGridView1_CellEndEdit(object sender, GridViewCellEventArgs e)
        {
            if (radGridView2.CurrentColumn.Name == "DONGIA" || radGridView2.CurrentColumn.Name == "SOLUONG")
            {
                if (radGridView2.CurrentRow.Cells["MAXE"].Value != null  && radGridView2.CurrentRow.Cells["SOLUONG"].Value != null && radGridView2.CurrentRow.Cells["DONGIA"].Value != null)
                {
                    radGridView2.CurrentRow.Cells["THANHTIEN"].Value = Convert.ToDouble(radGridView2.CurrentRow.Cells["SOLUONG"].Value) * Convert.ToDouble(radGridView2.CurrentRow.Cells["DONGIA"].Value);
                    decimal tonkho = 0;
                    decimal dongia = 0;
                    decimal kq = 0;
                    ctpnEn.MAXE = radGridView2.CurrentRow.Cells["MAXE"].Value.ToString();
                    ctpnEn.NGAYNHAP = dtpNgayNhap.Value;
                    DataSet ds = dti.TONKHO(ctpnEn);
                    if (ds.Tables[0].Rows.Count > 0)
                        tonkho = Convert.ToDecimal(ds.Tables[0].Rows[0][0]);
                    DataSet dsdg = dti.DONGIA(ctpnEn);
                    if (dsdg.Tables[0].Rows.Count > 0)
                        dongia = Convert.ToDecimal(dsdg.Tables[0].Rows[0][0]);
                    kq = dongia * tonkho;
                    radGridView2.CurrentRow.Cells["DONGIABQ"].Value = (Convert.ToDouble(radGridView2.CurrentRow.Cells["SOLUONG"].Value) * Convert.ToDouble(radGridView2.CurrentRow.Cells["DONGIA"].Value) + Convert.ToDouble(kq)) / (Convert.ToDouble(tonkho) + Convert.ToDouble(radGridView2.CurrentRow.Cells["SOLUONG"].Value));
                }
            }
        }
        private void XoaRong()
        {
            txtSoPN.Text = "";
            txtThue.Value = 0;
            cbNCC.SelectedIndex = 0;
            radGridView2.Rows.Clear();
        }

        private void ActiveButton(bool flag)
        {

            btLuu.Enabled = flag;
            btHuy.Enabled = flag;
            btThem.Enabled = !flag;
            btSua.Enabled = !flag;
            btXoa.Enabled = !flag;

        }
        private void LoadLVDSPhieuNhap()
        {
            DataSet ds = new DataSet();
            pnEn.NGAYPN = dtpNgayNhap.Value;
            ds = dti.DANHSACHPHIEUNHAP(pnEn);
            if (ds.Tables.Count > 0)
            {
                radListView1.Items.Clear();
                foreach (DataRow r in ds.Tables[0].Rows)
                {
                    radListView1.Items.Add(r["ID"], r["SOPN"], r["TENNCC"]);
                    //.Rows.Add();
                }
            }
        }
        private void ThemPhieuNhap()
        {
            pnEn.MANCC = cbNCC.SelectedValue.ToString();
            pnEn.NGAYPN = dtpNgayNhap.Value;
            pnEn.SOPN = txtSoPN.Text;
            pnEn.THUE = txtThue.Value;
            pnEn.THANHTIEN = THANHTIEN();
            try
            {
                dti.THEMPHIEUNHAP(pnEn);
               
                
            }
            catch
            {
               
            }
        }
        private void SuaPhieuNhap()
        {
            pnEn.ID = ID;
            pnEn.MANCC = cbNCC.SelectedValue.ToString();
            pnEn.NGAYPN = dtpNgayNhap.Value;
            pnEn.SOPN = txtSoPN.Text;
            pnEn.THUE = txtThue.Value;
            pnEn.THANHTIEN = THANHTIEN();
            try
            {
                dti.SUAPHIEUNHAP(pnEn);
                MessageBox.Show("Cập nhật thành công phiếu nhập số " + txtSoPN.Text, "Thông báo", MessageBoxButtons.OK);
                ActiveButton(false);
                LoadLVDSPhieuNhap();
            }
            catch
            {
                MessageBox.Show("Xảy ra lỗi khi cập nhật phiếu nhập số " + txtSoPN.Text, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void XoaPhieuNhap()
        {
            pnEn.ID = ID;
            try
            {
                if (MessageBox.Show("Bạn có muốn xoá phiếu nhập số " + txtSoPN.Text + " không ?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    dti.XOAPHIEUNHAP(pnEn);
                    MessageBox.Show("Xoá thành công phiếu nhập số " + txtSoPN.Text, "Thông báo", MessageBoxButtons.OK);
                    XoaRong();
                    LoadLVDSPhieuNhap();
                }
            }
            catch
            {

            }
        }

        private void btThem_Click(object sender, EventArgs e)
        {
            XoaRong();
            TT = 1;
            txtSoPN.ReadOnly = false;
            ActiveButton(true);
            radGridView2.AllowAddNewRow = true;
            radGridView2.AllowEditRow = true;
        }

        private void btSua_Click(object sender, EventArgs e)
        {
            TT = 2;
            txtSoPN.ReadOnly = true;
            ActiveButton(true);
            radGridView2.AllowAddNewRow = false;
            radGridView2.AllowDeleteRow = false;
            radGridView2.AllowEditRow = false;
        }

        private void btXoa_Click(object sender, EventArgs e)
        {
            //XoaPhieuNhap();
            //LoadLVDSPhieuNhap();
            //radListView1_ItemMouseClick(null, null);
            MessageBox.Show("Không cho phép xóa phiếu nhập.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        private bool KTNhapLieu()
        {
            if (txtSoPN.Text.Length == 0)
            {
                MessageBox.Show("Phải nhập số phiếu nhập.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else
            {
                Hashtable ht = HashListPHIEUNHAP();
                if (TT == 1)
                {
                    if (ht.ContainsKey(txtSoPN.Text))
                    {
                        MessageBox.Show("Số phiếu nhập đã tồn tại.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }
                }
               
            }
            if (cbNCC.SelectedValue == null)
            {
                MessageBox.Show("Phải chọn nhà cung cấp.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            if (radGridView2.RowCount == 0)
            {
                MessageBox.Show("Phải nhập xe cho chi tiết phiếu nhập.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;


            }
            else
            {
                foreach (GridViewRowInfo gvr in radGridView2.Rows)
                {

                    if (gvr.Cells["MAXE"].Value == null)
                    {
                        MessageBox.Show("Phải chọn tên xe.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }
                    if (gvr.Cells["SOLUONG"].Value == null)
                    {
                        MessageBox.Show("Phải nhập số lượng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }
                    if (gvr.Cells["DONGIA"].Value == null)
                    {
                        MessageBox.Show("Phải nhập đơn giá.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return false;
                    }
                }
            }
            return true;

        }
        private void btLuu_Click(object sender, EventArgs e)
        {
            try
            {
                if (KTNhapLieu())
                {
                    
                    if (TT == 1)
                    {

                        ThemPhieuNhap();
                        if (ThemCTPN())
                        {
                            MessageBox.Show("Thêm thành công phiếu nhập số " + txtSoPN.Text, "Thông báo", MessageBoxButtons.OK);
                            ActiveButton(false);
                            LoadLVDSPhieuNhap();
                        }
                        else
                            MessageBox.Show("Xảy ra lỗi khi thêm phiếu nhập số " + txtSoPN.Text, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);


                    }
                    else
                    {
                        SuaPhieuNhap();
                    }
                    LoadLVDSPhieuNhap();
                    radListView1_ItemMouseClick(null, null);
                }
               
            }
            catch
            {

            }
        }

        private void btHuy_Click(object sender, EventArgs e)
        {
            try
            {
                XoaRong();
                ActiveButton(false);
                LoadLVDSPhieuNhap();
                radListView1_ItemMouseClick(null, null);
            }
            catch
            {

            }
        }
        private decimal THANHTIEN()
        {
            decimal TONGTIEN = 0;
            foreach (GridViewRowInfo gvr in radGridView2.Rows)
            {
                if (gvr.Cells["THANHTIEN"].Value != null)
                    TONGTIEN += Convert.ToDecimal(gvr.Cells["THANHTIEN"].Value);
            }
            return TONGTIEN;
        }
        
        private void LoadTTPhieuPhap(int idpn)
        {
            radGridView2.AllowAddNewRow = false;
            pnEn.ID = idpn;
            DataSet ds = dti.TTPHIEUNHAP(pnEn);
            if (ds.Tables.Count > 0)
            {
                foreach (DataRow r in ds.Tables[0].Rows)
                {
                    ID =Convert.ToInt32( r["ID"]);
                    txtSoPN.Text=r["SOPN"].ToString();
                    cbNCC.SelectedValue = r["MANCC"].ToString();
                    dtpNgayNhap.Value =Convert.ToDateTime( r["NGAYPN"]);
                    txtThue.Value = Convert.ToDecimal(r["THUE"]);

                    ctpnEn.SOPN = ID;
                    ctpnEn.NGAYNHAP = dtpNgayNhap.Value;
                    DataSet dsct = dti.DANHSACHCHIETPHIEUNHAPTHEOMAPN(ctpnEn);
                    if (dsct.Tables.Count > 0)
                    {
                        radGridView2.Rows.Clear();
                        foreach (DataRow dr in dsct.Tables[0].Rows)
                        {
                            radGridView2.Rows.Add(dr["MAXE"].ToString(), dr["SOLUONG"].ToString(), dr["DONGIANHAP"].ToString(), dr["DONGIABQ"].ToString(), Convert.ToDecimal(dr["SOLUONG"]) * Convert.ToDecimal(dr["DONGIANHAP"].ToString()));
                        }
                    }
                }

            }
        }

        private void radListView1_ItemMouseClick(object sender, ListViewItemEventArgs e)
        {
            try
            {
               ListViewDataItem  ri = radListView1.SelectedItem;
               ID =Convert.ToInt32(ri[0]);
               LoadTTPhieuPhap(ID); 
            }
            catch
            {
 
            }
        }
        private bool ThemCTPN()
        {
            bool flag = false;
            ctpnEn.NGAYNHAP = dtpNgayNhap.Value;
            ID = dti.GetMaxID(pnEn);
            ctpnEn.SOPN = ID;
            foreach (GridViewRowInfo gvr in radGridView2.Rows)
            {
                ctpnEn.MAXE = gvr.Cells[0].Value.ToString();
                ctpnEn.SOLUONG =Convert.ToInt32(gvr.Cells[1].Value);
                ctpnEn.DONGIANHAP = Convert.ToDecimal(gvr.Cells[2].Value);
                ctpnEn.DONGIABQ = Convert.ToDecimal(gvr.Cells[3].Value);
                try
                {
                    dti.ThemCTPN(ctpnEn);
                    flag = true;
                }
                catch
                {

                }
                if (flag == false)
                {
                    return false;
                   
                }

            }
            return true;
        }

        public decimal convert { get; set; }
    }
}
